package top.gcl.controller;

import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import top.gcl.entity.Book;
import top.gcl.model.JsonResult;
import top.gcl.model.JsonResultPage;
import top.gcl.service.BookSrvlmpl;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("/api/")
public class BookCerl {

    @Resource
    private BookSrvlmpl bookSrv;
//    @RequestMapping("/{id}/{age}")
//    //也可以使用默认模式 注解里边有name
//    //如果加上name 下边的id 比如 String id 中的id可以换名字
//    //如果是默认的模式String id中的id不可以更改 只能叫id
//   public String get(@PathVariable(name="id") String id,@PathVariable(name="age") String age){
//        System.out.println("age:"+age);
//      System.out.println("id:"+id);
//      return "id:"+id+"--age:"+age;
//   }

    @GetMapping("/book/{id}")
    //也可以使用默认模式 注解里边有name
    //如果加上name 下边的id 比如 String id 中的id可以换名字
    //如果是默认的模式String id中的id不可以更改 只能叫id
    public JsonResult get(@PathVariable("id") String id){
        Book book=null;
        try {
            book = bookSrv.showById(id);
        }catch (Exception e){
            e.printStackTrace();
        }

        JsonResult<Book> res=new JsonResult(0,"成功");
        res.setData(book);
        return res;
    }
    @DeleteMapping(value={"/book/delete/{id}","/book/delete"})
    public  JsonResult deleteById (@PathVariable(required = false) String id)
    {
        JsonResult res =new  JsonResult(0,"删除成功");
        try{
            int i=bookSrv.deleteById(id);
            if(i!=1)
            {
                res.setCode(100);
                res.setMsg("删除失败");
            }
        }catch (Exception e)
        {
            e.printStackTrace();
            res.setCode(100);
            res.setMsg("删除失败");
        }
        return res;
    }
    @PostMapping("/books/select/{pageNum}/{pageSize}")
    public JsonResult list(@PathVariable  String pageNum ,@PathVariable String pageSize) throws Exception {
        int pageNumInt=0;
        int pageSizeInt=5;
        if(pageNum!=null&&!"".equals(pageNum));
        {
            try{

                pageNumInt=Integer.parseInt(pageNum);
            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }
        if(pageSize!=null&&!"".equals(pageSize));
        {
            try
            {
                pageSizeInt=Integer.parseInt(pageSize);

            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }

        JsonResultPage res =new JsonResultPage(0,"查询成功");
        try {
            PageInfo<Book> pageInfo=bookSrv.list(pageNumInt,pageSizeInt);
            res.setPageNum(pageInfo.getPageNum());
            res.setPages(pageInfo.getPages());
            res.setPageSize(pageInfo.getPageSize());
            res.setTotal(pageInfo.getTotal());
            res.setData(pageInfo.getList());
        }catch (Exception e)
        {
            e.printStackTrace();
            res.setCode(100);
            res.setMsg("查询失败");
        }
        return res;
        //throw new Exception("模拟抛出非运行时异常");
    }
    @PostMapping("/book/add/{name}/{author}")
    public JsonResult save(@PathVariable String name,@PathVariable String author)
    {
        JsonResult res =new JsonResult(0,"保存成功");
        try {
            String uuid = UUID.randomUUID().toString().replace("-", "");
            Book book = new Book(uuid, name, author);
            bookSrv.save(book);
        }catch (Exception e)
        {
            e.printStackTrace();
            res.setCode(100);
            res.setMsg("保存失败");
        }
        String content=String.format("name:%s,author:%s",name,author);
        System.out.println(content);

        return res;
    }
}


